﻿/*
 * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2023-2023. All rights reserved.
 * Description: hmac feature
 * Create: 2023-2-17
 */

#ifndef HMAC_FEATURE_EXT_INTERFACE_H
#define HMAC_FEATURE_EXT_INTERFACE_H

#include "mac_vap_ext.h"
#include "mac_device_ext.h"
#include "mac_user_ext.h"

#ifdef __cplusplus
#if __cplusplus
extern "C" {
#endif
#endif

typedef enum {
    /* CSA特性对外接口 */
    HMAC_FHOOK_CSA_AP_IS_SWITCH,
    HMAC_FHOOK_CSA_AP_ENCAP_BEACON_CSA_IE,
    HMAC_FHOOK_CSA_AP_CSA_PRESENT_IN_BCN,
    HMAC_FHOOK_CSA_AP_SWITCH_NEW_CHANNEL,
    HMAC_FHOOK_CSA_STA_FSM_IS_WAITING,
    /* SR特性对外接口 */
    HMAC_FHOOK_SR_UPDATE_IE_INFO,
    /* SLP特性对外接口 */
    HMAC_FHOOK_SLP_TX_DISABLE,
    /* sdp特性对外接口 */
    HMAC_FHOOK_SDP_IS_INIT,
    HMAC_FHOOK_IS_SDP_FRAME,
    HMAC_FHOOK_SDP_PROC_RX_MGMT,
    /* m2u特性对外接口 */
    HMAC_FHOOK_M2U_TX_CLASSIFY_SPECIAL,
    HMAC_FHOOK_M2U_SNOOP_INSPECTING,
    HMAC_FHOOK_M2U_CLEANUP_SNOOPWDS_NODE,
    HMAC_FHOOK_M2U_SNOOP_CONVERT,
    HMAC_FHOOK_M2U_UNICAST_CONVERT_MULTICAST,
    HMAC_FHOOK_M2U_ATTACH,
    HMAC_FHOOK_M2U_DETACH,
    /* REPEATER特性对外接口 */
    HMAC_FHOOK_REPEATER_BRIDGE_TX_PROCESS,
    HMAC_FHOOK_REPEATER_BRIDGE_RX_PROCESS,
    /* LATENCY特性对外接口 */
    HMAC_FHOOK_LATENCY_STAT_TX_ENTRY,
    HMAC_FHOOK_RECORD_LATENCY_TX,
    /* 分片和分片重组对外接口 */
    HMAC_FHOOK_FRAG_START,
    HMAC_FHOOK_FRAG_DERAG_START,
    HMAC_FHOOK_FRAG_DERAG_CLEAR,
    /* 蓝牙共存特性对外接口 */
    HMAC_FHOOK_BTCOEX_BA_CHECK,
    HMAC_FHOOK_BTCOEX_BA_ADDBA,
    HMAC_FHOOK_BTCOEX_M2S_M2S_ALLOW_CHECK,
    HMAC_FHOOK_BTCOEX_M2S_BACK_MIMO_CHECK,
    HMAC_FHOOK_BTCOEX_M2S_BACK_MIMO,
    HMAC_FHOOK_BTCOEX_M2S_UPDATE_HAL_DEVICE,
    HMAC_FHOOK_BTCOEX_M2S_CHOOSE_MIMO_SISO,
    HMAC_FHOOK_BTCOEX_M2S_S2M_ALLOW_CHECK,
    HMAC_FHOOK_BTCOEX_NOTIFY_SET_WIFI_STATUS,
    HMAC_FHOOK_BTCOEX_NOTIFY_INOUT_SISO,
    HMAC_FHOOK_BTCOEX_PS_ONE_PKT_TYPE_UPDATE,
    HMAC_FHOOK_BTCOEX_PS_STOP_CHECK,
    HMAC_FHOOK_BTCOEX_PS_SET_SW_PREEMPT_TYPE,
    HMAC_FHOOK_BTCOEX_SET_WLAN_PRIORITY,
    HMAC_FHOOK_BTCOEX_RECOVER_COEX_PRIORITY,
    HMAC_FHOOK_BTCOEX_RECOVER_COEX_PRIORITY_CLEAR,
    HMAC_FHOOK_BTCOEX_UPDATE_THRESHOLD,
    HMAC_FHOOK_BTCOEX_LINKLOSS_OCCUPIED,
    HMAC_FHOOK_BTCOEX_RX_PROCESS_ECT,
    HMAC_FHOOK_BTCOEX_ASSOC_STATE_SYN,
    HMAC_FHOOK_BTCOEX_ROAM_SUCC_HANDLER,
    HMAC_FHOOK_BTCOEX_CHECK_IN_LIST,
    HMAC_FHOOK_BTCOEX_PROC_USER_ADD,
    HMAC_FHOOK_BTCOEX_PROC_VAP_ADD,
    HMAC_FHOOK_BTCOEX_TX_MGMT_FRAME,
    HMAC_FHOOK_BTCOEX_TX_VIP_FRAME,
    HMAC_FHOOK_BTCOEX_USER_SPATIAL_STREAM_CHANGE,
    HMAC_FHOOK_BTCOEX_CHECK_RX_SAME_BAW_START_FROM_ADDBA_REQ,
    HMAC_FHOOK_BTCOEX_CHECK_USER_REQ_DECLINED,
    HMAC_FHOOK_BTCOEX_SET_TXOP_ALG,
    HMAC_FHOOK_BTCOEX_UPDATE_BSS_LIST_PROTOCOL,
    HMAC_FHOOK_BTCOEX_CHECK_AP_TYPE_BLACKLIST,
    HMAC_FHOOK_BTCOEX_CLEAR_ARP_TIMER,
    HMAC_FHOOK_BTCOEX_KEEPALIVE_TIMER_ECT,
    HMAC_FHOOK_BTCOEX_COMPATIBILITY_SET_PS_TYPE,
    HMAC_FHOOK_BTCOEX_COMPATIBILITY_SET_AP_TYPE,
    HMAC_FHOOK_BTCOEX_VAP_RESUME_TX_BY_CHL,
    HMAC_FHOOK_BTCOEX_VAP_CONFIG_SW_PREEMPT_SUBTYPE,
    HMAC_FHOOK_BTCOEX_DEVICE_EXIT_DESTROY_TIMER,
    HMAC_FHOOK_BTCOEX_REPORT_LINKLOSS_INFO,
    HMAC_FHOOK_BTCOEX_SW_PREEMPT_TYPE_CHECK,
    HMAC_FHOOK_BTCOEX_HAL_GET_BTSTATUS_BTON,
    HMAC_FHOOK_BTCOEX_HAL_LINKLOSS_CLEAN,
    HMAC_FHOOK_BTCOEX_HAL_CHECK_SET_AGING_TIME,
    HMAC_FHOOK_BTCOEX_HAL_CHECK_SW_PREEMPT_TYPE,
    HMAC_FHOOK_BTCOEX_HAL_SET_BTCOEX_WIFI_STATUS,
    HMAC_FHOOK_BTCOEX_HAL_END_SCAN_CHECK_PS,
    HMAC_FHOOK_BTCOEX_HAL_USER_ADD_HANDLE,
    HMAC_FHOOK_BTCOEX_HAL_WIFI_BUSY_NOTIFY,
    /* 自动调频对外接口 */
    HMAC_FHOOK_AUTO_FREQ_FRAME_COUNT,
    HMAC_FHOOK_AUTO_FREQ_PPS,
    HMAC_FHOOK_AUTO_FREQ_BTCOEX,
    /* wapi对外接口 */
    HMAC_FHOOK_WAPI_RX_FRAME,
    HMAC_FHOOK_WAPI_TX_FRAME,
    HMAC_FHOOK_WAPI_TX_LAN2WLAN,
    HMAC_FHOOK_WAPI_RESET,
    HMAC_FHOOK_WAPI_ADD_KEY,
    HMAC_FHOOK_WAPI_UPDATE_LEGCY_ONLY,
    HMAC_FHOOK_WAPI_ETHER_TYPE_CHECK,
    HMAC_FHOOK_WAPI_CONNECT_BSS_DSCR,
    HMAC_FHOOK_WAPI_DISABLE,
    HMAC_FHOOK_WAPI_UPDATE_ROAM,
    HMAC_FHOOK_WAPI_USER_ADD_CHECK,
    HMAC_FHOOK_WAPI_INIT,
    HMAC_FHOOK_WAPI_DEINIT,
    HMAC_FHOOK_WAPI_GET_ETHER_TYPE,
    HMAC_FHOOK_WAPI_CONNECT_CHECK,
    HMAC_FHOOK_WAPI_UPDATE_CONNECT_PARAM,
    /* NFRP特性对外接口 */
    HMAC_FHOOK_NFRP_UPDATE_PARAMS,
    /* AMSDU TX特性对外接口 */
    HMAC_FHOOK_AMSDU_TX_ENCAP_LARGE_SKB,
    HMAC_FHOOK_AMSDU_TX_NOTIFY_ETC,
    HMAC_FHOOK_AMSDU_TX_INIT_USER_ETC,
    HMAC_FHOOK_AMSDU_TID_INFO_CLEAR,
    /* MBO对外接口 */
    HMAC_FHOOK_MBO_STA_ASSOC_ADD_MBO_SOC_IE,
    HMAC_FHOOK_MBO_STA_HANDLE_MBO_IE,
    HMAC_FHOOK_MBO_STA_CHECK_IS_ASSOC_ALLOWED,
    HMAC_FHOOK_MBO_STA_UPDATE_IS_ASSOC_ALLOWED,
    HMAC_FHOOK_MBO_STA_SET_DELAY_PARAM,
    HMAC_FHOOK_MBO_STA_ATTACH_MBO_IE_AUTH,
    HMAC_FHOOK_MBO_STA_UPDATE_RRM_SCAN_PARAM,
    HMAC_FHOOK_MBO_STA_MODIFY_CHAN_PARAM,
    HMAC_FHOOK_MBO_STA_SCAN_ADD_MBO_IE,
    HMAC_FHOOK_MBO_STA_REMOVE_MBO_IE,
    /* 11k特性对外接口 */
    HMAC_FHOOK_11K_STA_RX_RADIO_MEASUREMENT,
    HMAC_FHOOK_11K_STA_UPDATE_RRM_CAP,
    HMAC_FHOOK_11K_AP_UPDATE_RRM_CAP,
    HMAC_FHOOK_11K_SET_RRM_CAP,
    HMAC_FHOOK_11K_GET_TSF,
    HMAC_FHOOK_11K_UPDATE_BSS_LIST_RRM,
    HMAC_FHOOK_11K_SET_TSF,
    HMAC_FHOOK_GET_11K_CAP,
    /* 11R特性对外接口 */
    HMAC_FHOOK_11R_SET_MD_IE,
    HMAC_FHOOK_11R_SET_AUTHENTICATION_MODE,
    HMAC_FHOOK_11R_MIB_INIT_CFG,
    HMAC_FHOOK_11R_ENCAP_AUTH_REQ_FT_IE,
    HMAC_FHOOK_11R_AUTH_SEQ2_PROCESS,
    HMAC_FHOOK_11R_PROCESS_ASSOC_RSP,
    HMAC_FHOOK_11R_ROAM_CONNECT_START_ETC,
    HMAC_FHOOK_11R_ROAM_CONNECT_TO_BSS,
    HMAC_FHOOK_11R_ROAM_CHANGE_APP_IE,
    HMAC_FHOOK_11R_VAP_INIT,
    HMAC_FHOOK_11R_ROAM_CONNECT_FSM_INIT,
    HMAC_FHOOK_11R_GET_11R_CAP,
    HMAC_FHOOK_11R_SET_MD_FT_OVER_DS,
    /* CSI特性对外接口 */
    HMAC_FHOOK_CSI_EXIT,
    /* 黑白名单特性对外接口 */
    HMAC_FHOOK_RX_MGMT_BLACKLIST_FILTER,
    HMAC_FHOOK_BLACKLIST_FILTER_ETC,
    HMAC_FHOOK_BLACKLIST_GET_POINTER,
    /* WPS特性对外接口 */
    HMAC_FHOOK_SCAN_DEL_WPS_IE,
    /* DFX特性对外接口 */
    HMAC_FHOOK_DFX_USER_CONN_ABNORMAL_RECORD,
    HMAC_FHOOK_DFX_USER_CONN_STATISTIC_RECORD,
    HMAC_FHOOK_DFX_FRAME_REPORT_HSO,
    HMAC_FHOOK_DFX_USER_RATE_RX_INFO_RECORD,
    HMAC_FHOOK_DFX_SCAN_FRAME_REPORT_HSO,
    /* 混杂模式PROMIS对外接口 */
    HMAC_FHOOK_PROMIS_RX_DEAUTH_REQ_PROC,
    HMAC_FHOOK_PROMIS_SEND_CUSTOM_FRAME,
    /* 漫游对外接口 */
    HMAC_FHOOK_ROAM_START,
    HMAC_FHOOK_ROAM_GET_INFO,
    HMAC_FHOOK_ROAM_PROC_CONNECT_CMD,
    HMAC_FHOOK_ROAM_CHECK_BKSCAN,
    HMAC_FHOOK_ROAM_ADD_KEY_DONE,
    HMAC_FHOOK_ROAM_UPDATE_PMF,
    HMAC_FHOOK_ROAM_TRIGGER_SEND,
    HMAC_FHOOK_ROAM_CHANGE_APP_IE,
    HMAC_FHOOK_ROAM_UPDATE_USER_MAC,
    HMAC_FHOOK_ROAM_SET_LINKLOSS_DONE,
    /* psd特性对外接口 */
    HMAC_FHOOK_PSD_GET_SWITCH,
    /* 11v特性对外接口 */
    HMAC_FHOOK_11V_SET_BSS_TRANSITION,
    HMAC_FHOOK_11V_SET_EXT_CAP_BSS_TRANSITION,
    HMAC_FHOOK_11V_SET_SCAN_PARAMS,
    HMAC_FHOOK_11V_CHECK_BSS_DSCR,
    HMAC_FHOOK_11V_CHECK_SCAN_RESULT,
    HMAC_FHOOK_11V_TRIGGER_ROAM_CHECK,
    HMAC_FHOOK_GET_11V_CAP,
    /* sta uapsd对外接口 */
    HMAC_FHOOK_STA_UAPSD_SET_QOS_INFO,
    HMAC_FHOOK_STA_UAPSD_GET_UAPSD_INFO,
    /* twt对外接口 */
    HMAC_FHOOK_TWT_IS_SESSION_ENABLE,
    HMAC_FHOOK_TWT_NOT_NEED_BUFF,
    HMAC_FHOOK_TWT_NEED_BUFF,
    HMAC_FHOOK_TWT_TX_ACTION,
    HMAC_FHOOK_TWT_P2P_TEARDOWN_SESSION,
    HMAC_FHOOK_TWT_PROCESS_UPDATE_INFO,
    HMAC_FHOOK_TWT_GET_REQ_BIT,
    HMAC_FHOOK_TWT_SET_EXT_CAP_TWT_REQ,
    /* 动态窄带2.0对外接口 */
    HMAC_FHOOK_DNB_ADD_PRIVATE_IE,
    /* ap uapsd对外接口 */
    HMAC_FHOOK_AP_UAPSD_UPDATE_USER_PARA,
    HMAC_FHOOK_AP_UAPSD_CHECK_TRIGGER,
    HMAC_FHOOK_AP_UAPSD_FLUSH_QUEUE,
    HMAC_FHOOK_AP_UAPSD_ENQUEUE_PROC,
    HMAC_FHOOK_AP_UAPSD_IS_QUEUE_EMPTY,
    HMAC_FHOOK_AP_UAPSD_GET_USER_INFO,
    HMAC_FHOOK_ACHBA_ADD_CHBA_INFO_IE,
    HMAC_FHOOK_ACHBA_UPDATE_PROCESS,
    HMAC_FHOOK_ACHBA_DEL_LINK_ID,
    /* 系统低功耗对外接口 */
    HMAC_FHOOK_PM_STA_STAT,
    HMAC_FHOOK_PM_STA_WAKEUP_DEV,
    HMAC_FHOOK_PM_LINKLOSS_IGNOR,
    /* 雷达感知特性对外接口 */
    HMAC_FHOOK_RADAR_SENSOR_GET_WORK_CHAN,
    HMAC_FHOOK_RADAR_SENSOR_DEL_VAP_NOTIFY,
    HMAC_FHOOK_INDEX_BUTT
} hmac_fhook_index_enum;

osal_void hmac_feature_hook_register(hmac_fhook_index_enum fhook_idx, osal_void *fun);
osal_void hmac_feature_hook_unregister(hmac_fhook_index_enum fhook_idx);
osal_void *hmac_get_feature_fhook(hmac_fhook_index_enum fhook_idx);
osal_u8 hmac_vap_id_param_check(osal_u8 vap_id);
osal_u8 hmac_vap_mode_param_check(const hmac_vap_stru *hmac_vap);
osal_u8 hmac_user_assoc_id_param_check(osal_u16 assoc_id);

#ifdef __cplusplus
#if __cplusplus
}
#endif
#endif

#endif
